/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import controladores.exceptions.NonexistentEntityException;
import entidades.Usuario;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.EntityManager;
import javax.persistence.Query;

/**
 *
 * @author Felipe
 */
public class UsuarioJpaController extends BaseControlador
{
    public UsuarioJpaController ()
    {
        super ();
    }
    
    public UsuarioJpaController(EntityManager em)
    {
        super(em);
    }
    
    public Usuario buscarUsuario (String username)
    {
        try
        {
            Query query = em.createNamedQuery("buscarPorUsuario");
            query.setParameter(1, username);
            return (Usuario) query.getResultList().get(0);
        }
        catch (IndexOutOfBoundsException ex)
        {
            return null;
        }
    }
    
    public Usuario buscarUsuario (Usuario usuario)
    {
        return buscarUsuario (usuario.getUsuario(), usuario.getClave());
    }
    
    public Usuario buscarUsuario (String username, String clave)
    {
        try
        {
            Query query = em.createNamedQuery("buscarPorUsuarioYClave");
            query.setParameter(1, username);
            query.setParameter(2, clave);
            
            Usuario usuario = (Usuario) query.getResultList().get(0);
            return usuario;
        }
        catch (Exception e)
        {
            System.out.println("No va nada...");
            
            return null;
        }
    }
    
    public List<Usuario> buscarUsuarios (String nombre)
    {
        try
        {
            Query query = em.createNamedQuery("buscarUsuarioPorNombre");
            query.setParameter(1, nombre);
            
            return query.getResultList();
        }
        catch (Exception e)
        {
            return new ArrayList<>();
        }
    }
}
